#include <string.h>
#include<stdlib.h>
#include "Fabricant.h"

void clean(char* monTexte)
{
  //retirer le dernier \n d'une chaine de caractère
  strtok(monTexte, "\n");

}


void fabricantInit(Fabricant * monFabricant)
{
  monFabricant->nbRouteurs=0;
}

void fabricantInit(Fabricant * monFabricant, char* source)
{
  FILE* fichier;
  fichier=fopen(source,"r");
  printf("\nINITIALISATION DU RESEAU DE ROUTEURS\n");
  monFabricant->nbRouteurs=0;
  while(fgets(monFabricant->routeurs[monFabricant->nbRouteurs].url,S_URL, fichier))
    {
      if(monFabricant->nbRouteurs>NB_ROUTEURS_MAX)
      {
      		printf("trop de routeurs dans le fichier fabricants.txt\n");
		exit(1);
      }
      clean(monFabricant->routeurs[monFabricant->nbRouteurs].url);
      fgets(monFabricant->routeurs[monFabricant->nbRouteurs].port,S_PORT, fichier);
      clean(monFabricant->routeurs[monFabricant->nbRouteurs].port);
      monFabricant->routeurs[monFabricant->nbRouteurs].id=monFabricant->nbRouteurs+1;
      printf( "n°%d url:%s port:%s\n",
	      monFabricant->routeurs[monFabricant->nbRouteurs].id,
	      monFabricant->routeurs[monFabricant->nbRouteurs].url,
	      monFabricant->routeurs[monFabricant->nbRouteurs].port);
      monFabricant->nbRouteurs++;
    }
  fclose(fichier);

}

void fabricantCreerOignon(Fabricant* monFabricant, Message* monMessage)
{



  printf("\nFABRICATION DE L'OIGNON\n");
  //on détermine le nombre de routeurs qui seront parcourus
  messageCrypter(monMessage,_clef(21));
  int nbRouteursParcourus= rand()%(monFabricant->nbRouteurs)+1;
  printf("on va parcourir %d routeur(s)\n",nbRouteursParcourus);
  //Selection du chemin
  int nb=-1;
  int nbtemp=-1;
  for(int i=0; i<nbRouteursParcourus; i++)
    {
        while(nb==nbtemp)
        {
            nbtemp= rand()%monFabricant->nbRouteurs ;
        }
        nb=nbtemp;

        messageTransferer(monMessage,monFabricant->routeurs[nb].url, monFabricant->routeurs[nb].port);
        messageCrypter(monMessage,_clef(monFabricant->routeurs[nb].id));


    }
     printf("fin fabrication Oignon\n");
}
